/*
 * PlainDuplicateDetector.h
 *
 *  Created on: Dec 10, 2010
 *      Author: Chengnian SUN
 */

#ifndef PLAINDUPLICATEDETECTOR_H_
#define PLAINDUPLICATEDETECTOR_H_

#include "AbstractDuplicateDetector.h"
#include "../plain-similarity-measures/PlainSimilarityMeasureFactory.h"

class PlainDuplicateDetector: public AbstractDuplicateDetector {
private:

  const enum PlainSimilarityMeasureFactory::SimilarityMeasureType m_similarity_measure_type;

protected:

  virtual void log_detector_summary(FILE* log_file);

  virtual AbstractToppingAlgorithm* create_topping_algorithm(
      const ReportBuckets& buckets);

public:

  PlainDuplicateDetector(FILE* log_file, unsigned top_number,
      const ReportDataset& report_dataset, const unsigned count_to_skip,
      const vector<IDetectorExtension*>& extensions,
      const enum PlainSimilarityMeasureFactory::SimilarityMeasureType similarity_measure_type,
      const bool detecting_all_reports,
      const IndexingType::EnumIndexingType indexing_type);
  virtual ~PlainDuplicateDetector();
};

#endif /* PLAINDUPLICATEDETECTOR_H_ */
